6.3 HTML
MH-E can display
messages that have been sent in HTML1. The content of
the message will appear in the MH-Show buffer as you would expect
if the entire message is HTML, or there is an inline HTML body
part. However, if there is an HTML body part that is an
attachment, then you'll see a button like this:
[1. text/html; foo.html]...
To see how to read the contents of this body part, see
Viewing
Attachments.
The browser
that MH-E uses is determined by the option
mm-text-html-renderer. The default setting is set
automatically based upon the presence of a known browser on your
system. If you wish to use a different browser, then set this
option accordingly. See the documentation for the browser you use
for additional information on how to use it. In particular, find
and disable the option to render images as this can tip off
spammers that the email address they have used is valid.
If you're
confused about which mm-text-html-renderer to use,
here's a brief description of each, sorted by popularity, that
includes the results of a quick poll of MH-E users from
2005-12-23.
- ‘w3m’
7
- The ‘w3m’ browser requires an external
program. It's quick, produces pretty nice output, and best of
all, it's the only browser that highlights links. These can be
clicked with Mouse-2 to view the content of the link
in ‘w3m’.
The ‘w3m’
browser handles tables well and actually respects the table's
width parameter (which can cause text to wrap if the author
didn't anticipate that the page would be viewed in Emacs).
- ‘w3m-standalone’ 3
- This browser, along with ‘nil’ for the external browser, are
the only choices that work without having to download a
separate lisp package or external program. This browser is
quick, but does not show links. It handles simple tables but
some tables get rendered much wider than the Emacs frame. This
browser was the only one not to handle the escape
‘–’ (it printed a
‘?’), but it
did render ‘®’.
- ‘links’
1
- The ‘links’ browser requires an external
program. It's quick, and produces nicer output than
‘lynx’ on
single column mails in tables. However, it doesn't show links
and it doesn't do as nice a job on multi-column tables as some
lines wrap. At least it fits in 80 columns and thus seems
better than ‘w3’ and ‘w3m-standalone’. Converts escapes
such as ‘®’ to (R).
- ‘lynx’
1
- The ‘lynx’ browser requires an external
program. It's quick and produces pretty decent output but it
doesn't show links. It doesn't seem to do multi-column tables
which makes output much cleaner. It centers the output and
wraps long lines more than most. Handles
‘®’.
- ‘nil’
1
- This choice obviously requires an external browser. Like
‘w3m-standalone’, it works out of the
box. With this setting, HTML messages have a button for the
body part which you can view with K v
(
mh-folder-toggle-mime-part).
- ‘w3’
0
- This choice does not require an external program as all of
the rendering is done in lisp. You do need to get the package
separately. This browser is slow, and doesn't
appear to have been updated since 2001 and the author hasn't
responded to my emails. It displays unknown tags instead of
hiding them, so you get to see all the Microsoft crap in
certain messages. Tends to make multi-column tables wider than
even a full-screen Emacs can handle. Like
‘w3m’, you
can follow links, but you have to find them first as they are
not highlighted. Performs well on single-column tables and
handles escapes such as ‘®’.
- ‘html2text’ 0
- The ‘html2text’ browser requires an
external program. I noticed that it can do some nasty things
with simple HTML mails (like filling the entire message as if
it were one paragraph, including signature). On another
message, it displayed half of the HTML tags for some
reason.
For a couple
more sources of information about
mm-text-html-renderer, see section Display
Customization in the The Emacs MIME Manual and
the documentation for the Gnus command W h (see
section Article
Washing in the The Gnus Manual).
A useful key binding that you
can add to ~/.emacs is the
following which displays an HTML link or textual URL in an
external browser when clicked with S-mouse-2. This
binding works in any buffer, including HTML buffers.
(global-set-key [S-mouse-2] 'browse-url-at-mouse)